异步承诺(Promise)
表示一个可能尚未可用的值。Promise 用于可能跨多个帧挂起的异步操作。
使用 Context:promise 创建一个新的 promise。
方法(Methods)
resolve
resolve(value: T) -> ()
使用给定的值解析 promise。解析后,任何等待该 promise 的挂起协程将在下一帧恢复执行。
function init(self: MyNode, context: Context): boolean
self.loaded = context:promise()
-- Start async load
loadAssetAsync(function(data)
self.loaded:resolve(data)
end)
return true
end
await
await() -> T
挂起当前协程,直到 promise 被解析,然后返回解析后的值。对同一个 promise 多次调用 await 会返回相同的值。
function draw(self: MyNode, renderer: Renderer)
if self.loaded then
local data = self.loaded:await()
if data then
renderer:drawImage(data.image, data.sampler, 'srcOver', 1)
end
end
end
isResolved
isResolved() -> boolean
如果 promise 已被解析,则返回 true。
if self.loaded:isResolved() then
print("Asset loaded!")
end